Memory

Readwrite

class Drive {
public:
  size_t getSectorSize() const;
  void readSector(size_t num, unsigned char data[]) const;
  void writeSector(size_t num, const unsigned char data[]);
};

Block vs Sector

Filesystem

file metadata

file contents

The inode

struct inode {
  uint16_6 i_mode; // file type and permissions
  uint8_t i_nlink; // number of hard links to the file
  uint8_t i_uid; // user ID of the file's owner
  uint8_t i_gid; // group ID of the file's group
  uint8_t i_size0; // most significant bits of the file size
  uint16_t i_size1; // least significant bits of the file size
  uint16  uint16_t i_addr[8]; // block numbers for the file's data
  uint16_t i_atime[2]; // last access time
  uint16_t i_mtime[2]; // last modification time
};

Addressing file